Enterprises are increasingly capturing, storing, and mining a plethora of information related to communications with their customers. Often this information is stored and indexed within databases. Once the information is indexed, queries are developed on an as-needed basis to mine the information from the database for a variety of organizational goals: such as planning, analytics, reporting, etc.
In fact, many enterprises have extremely large databases having frequent and daily transactions. The size of some of these databases and the frequency with which they are updated can be mind boggling. Thus, enterprises are continually looking for ways to decrease the size of the databases without impacting performance or usability. When the size of the database is effectively and efficiently reduced, processing throughput for database operations can also be substantially improved.
Unfortunately, compression of database information is largely applied to entire or whole tables within a database or to fields or columns of an entire or whole table. Thus, if the particular compressed table is used with any regularity there is a tradeoff in having compression against the table because the expense associated with regularly decompressing the data for use may be more expensive than just maintaining the table in an uncompressed format or may be expensive for some portions of the table but nor for other portions of the same table.
Furthermore, many times the database is poorly designed for its intended use or overly designed to accommodate situations that may never actually occur. For example, a dollar store may rarely if ever have a product for sale that exceeds $100; and yet, the database field for the sale price of the product may encompass 10 digits within a database table, when 3 digits are all that is ever used. If the database table is large then there are 7 bytes for each row, which is associated with a sales price field, unused. This can translate into a sizeable amount of data for a large database table. But, there is no ability in the existing art to selectively compress portions of a single database field; thus, either the entire field is compressed or none of the field is compressed.
Thus, it can be seen that improved and more efficient mechanisms for compression of database information are needed.